/**
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 *   
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 */
package org.jiopi.ibean.kernel.context.classloader;

import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Enumeration;
import org.apache.log4j.Logger;

/**
 * 
 * local jar class loader
 * 
 * default method call parent's method
 * 
 * *Local method load classes or resources from local
 * 
 * 
 * @since 2010.5.10
 *
 */
public class LocalClassLoader extends URLClassLoader {
	
	private static Logger logger = Logger.getLogger(LocalClassLoader.class);
	
	public final IBeanClassLoader parentClassLoader; 
	

	public LocalClassLoader(URL[] urls,IBeanClassLoader parent ){
		super(urls,null);
		if(parent == null) throw new NullPointerException();
		parentClassLoader = parent;
		if(logger.isDebugEnabled()){
			for(URL u :urls){
				logger.debug("use url "+u);
			}
		}
	}

	public Class<?> loadClass( String name ) throws ClassNotFoundException {
		return parentClassLoader.loadClass(name);
	}
	public Class<?> loadClassLocal( String name ) throws ClassNotFoundException {
		return super.loadClass(name);
	}
	
	public URL getResource( String name ) {
		return parentClassLoader.getResource(name);
	}
	public URL getResourceLocal( String name ) {
		return super.getResource(name);
	}
	
	
	public Enumeration<URL> getResources( String name ) throws IOException{
		return parentClassLoader.getResources(name);
	}
	public Enumeration<URL> getResourcesLocal( String name ) throws IOException {
		return super.getResources(name);
	}
	
}
